在 rails 裡面, 在 helpers 的資料夾裡面建立 module 方法可以使用在 view 當中使用,主要的目的是可以將資料轉換成 html 字串輸出用或是邏輯判斷,helper 是全域的,定義在哪一個檔案中沒有關係,檔案名稱也不需要與Controller名稱對應,但我自己還是會針對不同的 views 建立不同的檔名,能夠快速的辨識出哪些方法運用在哪些 views 裡面,當然前提是需要用到的方法很多的話,老話一句看需求。
下圖建立後就可以在 html 檔案裡面使用 favorite_song?(song) 方法
使用 helper 的好處是可以將上圖複雜的結構摸組化,將複雜的程式都用 helper 通通打包起來,而只讓 view 只有單純的輸出以及最簡單的邏輯和迴圈,這也使做專案的自己能夠輕易控制 view 。
在 view 裡面,我们可以透過使用 helper_method 在 private 裡面設定的方法拿到使用者所有的書的數量。
但是呢 user_books 其實原本是一個在 UsersController 裡面的 method ,但是我們為了要在 view 裡面要可以使用它。所以我們必須要在 UsersController 宣告他是一個 helper_method 之後才能直接在 view 使用。
helper_method :user_books 這一段表示的是 user_books 原本是一個 controller 裡面的方法,透過 helper_method 之後才能在 view 裡面直接使用這個 controller 的 private 方法,而且這樣做的好處是 controller 中也可以用 user_books 使自己的專案看上去更整潔。